home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / util / wb / SayMore.lha / SayMore.doc < prev    next >
Text File  |  1997-09-15  |  19KB  |  404 lines

  1.                         SayMore Version 0.45
  2.                               © 1997
  3.                       By Kenton A. Groombridge
  4.  
  5. Quick note:
  6.  
  7.   I have ordered ClassAct about a month and a half ago.  I still have not
  8. received it, but when I do, I will start working on some major changes to the
  9. program.  Until then, it will be just simple bug fixes and enhancements.  I
  10. like ClassAct, because unlike MUI, it costs you, the user, nothing.
  11.  
  12. The use of this program requires:
  13.  
  14. Workbench 2.04+ narrator.device V37+ found on Workbench 2.04/2.05 and
  15. translator.library V43+ found on Aminet as:
  16.  
  17.   util/libs/translator42.lha
  18.   util/libs/Tran43pch.lha
  19.  
  20. Introduction:
  21.  
  22.   SayMore is a program designed to replace Say.  Say was fine for Workbench
  23. 1.3, but the Say program included with 2.0X did not have the ability to change
  24. most of the options in the new narrator.device.
  25.  
  26.   This is a prerelease version of SayMore.  It is not far from being completed,
  27. but I want to make this program the best I can.  Please look over the interface
  28. and features and tell me what you like and dislike.
  29.  
  30.   You know I have been saying it is not far from being completed, but it is
  31. taking me forever to finish it.  Also I am thinking of all kinds of stuff to
  32. add to it so this is turing into a never ending project.  Hopefully someday it
  33. will be completed.  At least I have been spending about 5 to 10 hours per week
  34. on it.  That is a lot more hours than I use to spend on it.
  35.  
  36.   There are a couple programs similar to SayMore currently on Aminet.  These
  37. programs have severe memory leaks and are not system friendly.  A considerable
  38. amount of time and effort has gone into SayMore to ensure that it is safe.  It
  39. is near impossible for me to test all the limits of SayMore, but all test have
  40. proven that it is completely 100% OS friendly and has no memory leaks.  If you
  41. find a program on Aminet that has features that SayMore doesn't have and is not
  42. listed in the "To Do" list, let me know and I will work hard to implement
  43. those.
  44.  
  45. Disclaimer:
  46.  
  47.   The use of this program is on your own risk. There is no liability or
  48. responsibility for any damage caused by the program.
  49.   
  50. Copyright:
  51.  
  52.   SayMore is free to be spread on public-domain and shareware disks, as long as
  53. they are sold for a reasonable charge.
  54.  
  55. Use of the program:
  56.  
  57.   SayMore is my gift to the Amiga community.  I do not charge money for the use
  58. of SayMore, but I have coined the term caveatware.  Caveatware means that you
  59. may use the program just by reading the following.  You don't have to abide by
  60. them, just read and consider them.
  61.  
  62. 1.  If English is your native language, please try to speak it correctly.  I
  63. know that my English is not always correct, but I am trying to improve it.
  64. Some of by pet peeves are using the word "gender" when you mean "sex."  As one
  65. person said, gender is the attribute of a word and not a person.  This all has
  66. to do with political correctness which I despise.
  67.  
  68. 2.  Write a program for the Amiga.  It seems like every time I read usenet
  69. news, there is somebody wishing there was a program that did this or that.  Do
  70. something about it, and write a program.  I use to write programs with the
  71. public domain/freeware a68k and blink.  Although painful, I did write some
  72. pretty nifty programs.
  73.  
  74. 3.  If you write Amiga software, and charge a fee for what you write, please
  75. consider discounts for other Amiga software authors.  I feel that this would
  76. increase the amount of software for the Amiga.
  77.  
  78. 4.  Send a message to me letting me know that you use the program.  I would
  79. greatly appreciate some input on what you would like to see added or changed to
  80. the program.
  81.  
  82. 5.  If you do find a bug with the program.  Please let me know as soon as
  83. possible.  This will make future versions of the program better for you and
  84. other users.
  85.  
  86. 5.  Bug Amiga International to include narrator.device and translator.library
  87. with future releases of Workbench.  
  88.  
  89. 6.  More to follow.
  90.  
  91. Required:
  92.  
  93.   As far as I know, this program requires Workbench 2.04+, but it has not been
  94. tested on all platforms.  It was written on an Amiga 2000/GVP 040/Workbench 3.1
  95. and an Amiga 4000/040/Workbench 3.1.  Remember that it requires the new
  96. narrator.device included with Workbench 2.0X, and V43 of translator.library
  97. found on Aminet.
  98.  
  99. Reporting errors:
  100.  
  101.   I have put in some code to help determine the cause of errors.  When a
  102. detectable error occurs in this program, a requester will pop up with some text
  103. indicating the error that occurred and the approximate amount of CHIP RAM and
  104. FAST RAM.  If either of these numbers are small, you may be running out of
  105. memory.  Try to free some memory and try again.  Read the message.  If the
  106. message says "Can not open translator.library V43 or above," check to see that
  107. you have that library and it is the correct version.  The only problem that
  108. will not display an error, is if intuition.library V37 or above could not be
  109. opened.  This is because the requester requires intuition.library to be opened
  110. to operate.
  111.  
  112.   If you can not determine the cause of the error or the program fails without
  113. a detectable error, please send me the configuration of your system, other
  114. programs that were running at the time, and any other information you feel is
  115. important.   
  116.  
  117. Contacting the author:
  118.  
  119. e-mail      kgroombr@interquest.de
  120.             Kenton.Groombridge@wpc.af.mil
  121.  
  122. snail-mail  Kenton Groombridge
  123.             PSC 3 Box 1766
  124.             APO AE  09021
  125.             USA
  126.  
  127.                   -OR-
  128.  
  129.             Kenton Groombridge
  130.             PSC 3 Box 1766
  131.             D:67661 Kapaun Flugplatz
  132.             Germany
  133.  
  134. Acknowledgments:
  135.  
  136.   The first SayMore program was written using HiSoft DevPac Assembler 3.04.  I
  137. have sent several messages to HiSoft as how to upgrade to the most recent
  138. version of the program, but have never received a response.  If you know who
  139. to contact about upgrading this program, please let me know.
  140.  
  141.   This version of the program is written using SAS/C 6.58.  SAS/C is a great
  142. program, and I hope that they continue support for the Amiga.  Thanks to the
  143. SAS/C Amiga developers for the four patches written after Commodore's death.
  144.  
  145.   Thanks to Gateway 2000 for saving the Amiga's future.  For the folks at 
  146. Gateway, if you are looking for a quality individual with years of experience
  147. in sales, programming, quality control, and the dozen other jobs I have done in
  148. the military, look me up.  I can sell the Amiga.
  149.  
  150.  
  151. To do:
  152.  
  153. 1.  Refine the tool types.
  154. 2.  File requester to speak files.
  155. 3.  Make the command line operation compatable with Say and add extra features.
  156. 4.  Switch characters compatable with say, so that the voice can change while
  157.     speaking and add extra features.
  158. 5.  Rewind, Fast Forward, Stop, and Pause buttons.
  159. 6.  Sizeable main window.
  160. 7.  Menu with items such as "Open", "About", "Quit, etc."
  161. 8.  Font sensitivity.
  162. 9.  Localization.
  163. 10. More face types.  /* Any ideas out there? */
  164. 11. Refine the GUI.
  165. 12. Save options, with the ability to save multiple setups.
  166. 13. Enhance sentence parsing routines or do a plugin so users can define their
  167.     own.
  168. 14. Multiple selection of icons.
  169. 15. Progress indicator.
  170. 16. Pretty icons of my own design or if you have some, I will include them and
  171.     give you credit in my docs.
  172. 17. Better documentation in AmigaGuide format.  I got to work on this one!
  173. 18. Voice database, and the ability to save multiple voices.
  174. 19. Multiple faces at one time.
  175. 20. The ability to not use translator.library and type in the translated text
  176.     directly.
  177. 21. Any feasible user request.
  178.  
  179. 0.10B
  180. Written in assembler.  It was not user friendly, but it worked.
  181.  
  182. 0.20
  183. Ported to C and made several enhancements.
  184.  
  185. 0.25
  186. Fixed a bug in error reporting.  It reported that it could not create the
  187. console message port when it could not open translator.library and vice-versa.
  188.  
  189. Included the correct documentation.                                         
  190.  
  191. 0.30
  192. Fixed bug with the console_task that caused messages to get passed to the wrong
  193. instance of the program when two or more instances of the program were loaded.
  194.  
  195. Changed translate_buffer's size to account for the largest possible translate
  196. string (I hope).                     
  197.  
  198. Discovered a bug in translator.library.  When it handles large strings of
  199. consecutive numbers, it  will skip numbers every 100 numbers it processes.
  200. The tranlate_buffer's size accounts for the largest string possible when or if
  201. this bug is ever fixed.                     
  202.  
  203. Found a bug with the creation of the console_task.  If console_task tried to
  204. find it's parents message port before the port was added to the system list, it
  205. would crash with a Guru 80000008.  I could not find a way to completely fix
  206. this bug.  I did make it where the parent's message port is added to the system
  207. list way before the spawned task should ask for it.  The only way I know to fix
  208. this is to have only one instance of SayMore running at a time.  If at anytime
  209. you get this error, please let me know, and I will work harder to try to
  210. eliminate this bug.                     
  211.  
  212. Added "Face" window.  It is ugly, but it is a start.
  213.  
  214. 0.33
  215. Changed code so that only one instance of SayMore can run at a time.  There
  216. really is no reason for two instances since only one narrator.device can be
  217. open at any one time.
  218.  
  219. Fixed "Face" window so that it works with different size borders.
  220.  
  221. Eliminated the GimmeZeroZero window for face so less system resources are
  222. needed.
  223.  
  224. Sped up Face routine significantly.
  225.  
  226. Now uses EasyRequest() to print error messages.  This is good news for those
  227. who are using monitors that don't sync down to 15KHz.
  228.  
  229. "Face" window now uses a diamond mouth.  Don't worry, future version will have
  230. user configurable mouths.  This is just for testing since I am certian that the
  231. round mouth is functional.
  232.  
  233. 0.41
  234. Fixed bug with the code that determined if another instance of saymore was
  235. running.  It used to assign a name to the node of the process.  The problem
  236. was, if the program was run from the shell, it would change the process node of
  237. the shell to "SayMore".  If the program was exited and an attempt was made to
  238. run it again, it would not run because the shell still had the name "SayMore".
  239. It would only run again if the shell was exited.  Make sense?  Now it uses a
  240. message port to send and recieve it's messages when starting up.
  241.  
  242. Added one of my "To Do" items about a requester for "CONTINUE" or "BRING TO
  243. FRONT".  It can't bring the "SayMore Input" and "SayMore Output" windows to
  244. front because they are actually CON:.  Depending on the difficulty and the time
  245. I have, I will try to change CON: to windows and attach the console.device.
  246. The current method is easiest since CON: already has cut/paste and history
  247. built in.
  248.   
  249. Fixed the spelling of my name in the title bar.  When I was doing a search and
  250. replace, I killed the two o's in Groombridge.  Oh well, it didn't affect the
  251. running and it actually saved a couple bytes.
  252.  
  253. Added a couple optimizations that save a few bytes and sped up the code a bit.
  254.  
  255. SayMore is now translator.library V43+ only.  I did this because it is free,
  256. and it overcomes the shortcommings and the bugs found in V37
  257. translator.library.  It also has many features which make it a must have.  The
  258. docs say that V42 has bugs, but I never came across them.  Since the V43 patch
  259. is free, I made SayMore V43 only.
  260.  
  261. Command line operation.  Although not complete, you can specify a file name to
  262. speak.  The length of the filename does have a limit, but future versions will
  263. overcome this.  At the moment, this is under testing.  To read a file back
  264. type: Saymore "path:file", where "path:file" is the absolute or relative path
  265. and file name.  If it can't find the file, SayMore will appear to start up and
  266. then exit without a message.  A future version will open a file requester when
  267. this happens.
  268.  
  269. Added tool types.  At the moment there is no way to save the current
  270. configuration, but this is due to change.  To change their values, use the
  271. Icons->Information... from the Workbench menus and add/delete/edit the tools.
  272.  
  273. 0.42
  274. Fixed some stupid bugs in the file read routines.  Although the windows would
  275. open, no text was rendered in them.  Also the windows sometimes would not close
  276. when the program was finished speaking the file.
  277.  
  278. Fixed the "EYE" types so that they are all the same width and height no matter
  279. what eye type is used.  The "BOX" eye used to be rendered slightly larger.
  280.  
  281. Changed the tooltype values for "EYES" and "MOUTH".  "SQUARE" is now "BOX", and
  282. "ROUND" is now "OVAL".  I did this for three reasons.  It saves several bytes
  283. in the code, it makes the program faster, and they are more accurate terms.
  284.  
  285. 0.43
  286. Added Noses.
  287.                   
  288. Altered the tooltypes routines so that the values can be either upper or lower 
  289. case.  Before they were case sensitive and had to be upper case.
  290.                   
  291. Messed around with the face/eye/mouth routines some more and cut the code down 
  292. by about 200 bytes and sped up the routines about 10%.
  293.  
  294. Changed the internal icon to a smaller one so that the code is a lot smaller.
  295.  
  296. Optimized a few pieces of code here and there.
  297.  
  298. Changed the code so that that gadgets in the main window are no longer ghosted.
  299. Instead, it gives a busy pointer when clicking in the main window.  I like it 
  300. better this way except that if you use an interlace pointer with 3.X then you 
  301. will get the big ugly watch pointer.  I may start two versions, one for 2.X and 
  302. one for 3.X.
  303.  
  304. Now supports INPUTBUFFER and OUTPUTBUFFER tooltypes.
  305.                   
  306. Rewrote the spawned task routines.  Now more memory efficient and faster.
  307.  
  308. Fixed a bug in the if(signal_recieved & console_sigbit) It would GetMsg and 
  309. ReplyMsg even though there may not be a message.  Added if(GetMsg(..)).  I am 
  310. surprised I didn't find this one sooner.
  311.  
  312. 0.44 (12 Sep 97)
  313. Major reconstruction of the spawned tasks that reads input from the keyboard 
  314. and from a file.  I combined the two routines into one routine since they were 
  315. almost identicle and rewrote much of it.  It is a lot smaller and faster than 
  316. the previous version and should also fix a bug when pasting using Powersnap.
  317.                   
  318. Rewrote much of the tooltype reading section so that defaults are set up first 
  319. and any user override will set those desired.  This resulted in about 1KB 
  320. smaller code.
  321.  
  322. 0.45 (15 Sep 97)
  323. Don't ask about 0.44.  It was a mess.  Actually the code was clean except for
  324. two lines of code.  The weird thing is it worked on my machine, but not on most
  325. others.  The way I had it written would cause the machine to crash on many
  326. machines because of timing.  I fixed those two lines, and added a couple
  327. optimizations.
  328.  
  329. I am still waiting for ClassAct.  I need to get out my bank statement to see if
  330. they cashed my check and when.  For all I know they haven't received my
  331. payment.  I am a U.S. service member stationed in Germany, and sometimes the
  332. mail isn't exactly reliable.
  333.  
  334. Final Word:  Do not use 0.44!  It probably harm your system, but it is
  335. guaranteed to crash at some time.
  336.                                                      
  337.  
  338. Tool types currently supported are:
  339.  
  340.      String                   Value
  341. -----------------------------------------------------------------
  342. NOFACE       Boolean: use if you do not want the face window.
  343. FACEX=       Any positive value within the screen limits.
  344. FACEY=       Any positive value within the screen limits.
  345. FACEWIDTH=   Any positive value greater than 50 and within the screen limits.
  346. FACEHEIGHT=  Any positive value greater than 75 and within the screen limits.
  347. NOMAIN       Boolean: use if you do not want the main window.
  348. MAINX=       Any positive value within the screen limits.
  349. MAINY=       Any positive value within the screen limits.
  350. NOINPUT      Boolean: use if you do not want the input window.
  351. INPUTX=      Any positive value within the screen limits.
  352. INPUTY=      Any positive value within the screen limits.
  353. INPUTWIDTH=  Any positive value within the screen limits.
  354. INPUTHEIGHT= Any positive value within the screen limits.
  355. NOOUTPUT     Boolean: use if you do not want the output window.
  356. OUTPUTX=     Any positive value within the screen limits.
  357. OUTPUTY=     Any positive value within the screen limits.
  358. OUTPUTWIDTH= Any positive value within the screen limits.
  359. OUTPUTHEIGHT=Any positive value within the screen limits.
  360. EYES=        DIAMOND, BOX, OVAL
  361. NOSELEFT     Boolean.  Use if you want a left pointing nose.  Use along with
  362.              NOSERIGHT to make a triangle nose.
  363. NOSERIGHT    Boolean.  Use if you want a right pointing nose.  Use along with
  364.              NOSELEFT to make a triangle nose.
  365. MOUTH=       DIAMOND, BOX, OVAL
  366. INPUTBUFFER= The size of the input buffer for file reading.
  367. OUTPUTBUFFER=The size of the output buffer for the text conversion.
  368.  
  369.                              * NOTICE *
  370. Be careful with these six.  If the number is too small, you will be rendering
  371. in the window borders and you can go outside the rastport.  This can crash the
  372. system.  Leave these out to default to a safe value.
  373.  
  374. EYESPACING=  Any positive value.  The bigger the number the closer the spacing
  375.              of the eyes.
  376. EYEWIDTH=    Any positive value.  The bigger the number the smaller the width.
  377. EYEHEIGHT=   Any positive value.  The bigger the number the smaller the height.
  378. NOSELENGTH=  Any positive value.  The bigger the number the smaller the nose.
  379. MOUTHWIDTH=  Any positive value.  The bigger the number the smaller the mouth.
  380. MOUTHHEIGHT= Any positive value.  The bigger the number the smaller the mouth.
  381.                              * NOTICE *
  382.  
  383.    * These will be supported when the Sizeable main window is finished. *
  384. MAINWIDTH=   Any positive value within the screen limits.
  385. MAINHEIGHT=  Any positive value within the screen limits.
  386.  
  387. Last bit of info:
  388.  
  389.   You all may wonder what happens to versions that are not listed above.  They
  390. do exist, but are versions that I test and debug.  They are not released to the
  391. general public.  If you want to receive beta programs, actually they are all
  392. beta, send me an email or retrieve them from my web site.  All I ask is that
  393. you test them thoroughly and send me notes letting me know the problems you
  394. find.  For those that don't want these unreleased beta's, I have not received
  395. any reports of major bugs in the beta's except for version 0.44.  Version 0.44
  396. is a different beast all together.  I will try never to do that again.  Anyway,
  397. I try to release quality software.  I run SayMore every day on large text files
  398. while programming.  Like I said before, there is no way for me to debug it 
  399. completely.  That is why I appreciate your input.
  400.   
  401. Get the latest version on my web page at:
  402.  
  403. http://www.interquest.de/~kgroombr/
  404.